package algorithm_optimal_solution.LinkedList;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//一种怪异的节点删除方式（节点中为int类型，不给链表头节点，给一个链表中的节点，如何在链表中删除该节点）：
//比如1->2->3->null，要删除节点2可以将节点3的值复制给节点2，删除3节点。
//问题一：这样的删除方式无法删除最后一个节点。
//问题二：该方式并不是删除了node节点，而是将值改变，删除node下一个节点，在实际工程中可能会带来很大问题。比如Node过于复杂，代表一个服务器，除了复制困难，还会影响下一个节点的服务。
public class StrangeRemoveNode {

    static class Node{
        private int value;
        private Node node;

        public Node(int value,Node node){
            this.value = value;
            this.node = node;
        }

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }

        public Node getNode() {
            return node;
        }

        public void setNode(Node node){
            this.node = node;
        }
    }

    public void removeNodeWired(Node node){
        if(node == null){
            return;
        }
        Node next = node.getNode();
        if(next == null){
            return;
        }
        node.setValue(next.getValue());
        node.setNode(next.getNode());
    }

    public static void main(String[] args)throws IOException {
        BufferedReader scanner = new BufferedReader(new InputStreamReader(System.in));
        int len = Integer.parseInt(scanner.readLine());
        String[] numbers = scanner.readLine().split(" ");
        Node node = null;
        Node cur = null;
        int x = 0;
        for(int i = len - 1;i >= 0;i--){
            node = new Node(Integer.parseInt(numbers[i]),node);
            if(++x == 3){
                cur = node;
            }
        }
        new StrangeRemoveNode().removeNodeWired(cur);
    }
}
